﻿using MotorLibrary.Model;
using MotorLibrary.Repository.DTO;
using System;

namespace MotorLibrary.Repository.Converter
{
    public class VariableEjecucionConverter: IVariableEjecucionConverter
    {
        private IVariableConverter _variableConverter;
        private IEjecucionConverter _ejecucionConverter;
        public VariableEjecucionConverter(
            IVariableConverter variableConverter,
            IEjecucionConverter ejecucionConverter)
        {
            this._variableConverter = variableConverter;
            this._ejecucionConverter = ejecucionConverter;
        }

        public VariableEjecucion DtoToEntity(VariableEjecucionDTO dto)
        {
            VariableEjecucion resultado;

            if (dto == null)
            {
                resultado = null;
            }
            else
            {
                resultado = new VariableEjecucion();

                resultado.ID = dto.ID;
                resultado.VariableID = dto.VariableID;
                resultado.EjecucionID = dto.EjecucionID;
                resultado.Valor = dto.Valor;
                resultado.Variable = _variableConverter.DtoToEntity(dto.Variable);
                resultado.Ejecucion = _ejecucionConverter.DtoToEntity(dto.Ejecucion);
            }

            return resultado;
        }

        public VariableEjecucionDTO EntityToDto(VariableEjecucion entity)
        {
            VariableEjecucionDTO resultado;

            if (entity == null)
            {
                resultado = null;
            }
            else
            {
                resultado = new VariableEjecucionDTO();

                resultado.ID = entity.ID;
                resultado.VariableID = entity.VariableID;
                resultado.EjecucionID = entity.EjecucionID;
                resultado.Valor = entity.Valor;
                resultado.Variable = _variableConverter.EntityToDto(entity.Variable);
                resultado.Ejecucion = _ejecucionConverter.EntityToDto(entity.Ejecucion);
            }

            return resultado;
        }
    }
}
